package com.example.community.service;

import com.example.community.dto.UserDto;
import com.example.community.mapper.GiteeUserMapper;
import com.example.community.model.GiteeUser;
import com.example.community.model.GiteeUserExample;
import com.example.community.model.User;
import com.example.community.model.UserExample;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class GiteeUserService {
    @Autowired
    private GiteeUserMapper giteeUserMapper;

    public void createOrUpdate(GiteeUser giteeUser) {
        GiteeUserExample giteeUserExample = new GiteeUserExample();
        giteeUser.setType("gitee");
        giteeUserExample.createCriteria()
                .andAccountIdEqualTo(giteeUser.getAccountId());
//                .andTypeEqualTo(giteeUser.getType());
        List<GiteeUser> giteeUsers = giteeUserMapper.selectByExample(giteeUserExample);
        if (giteeUsers.size() == 0) {
            // 插入
            giteeUser.setGmtCreate(System.currentTimeMillis());
            giteeUser.setGmtModified(giteeUser.getGmtCreate());
            giteeUserMapper.insert(giteeUser);
        } else {
            //更新
            GiteeUser dbUser = giteeUsers.get(0);
            GiteeUser updateUser = new GiteeUser();
            updateUser.setGmtModified(System.currentTimeMillis());
            updateUser.setAvatarUrl(giteeUser.getAvatarUrl());
            updateUser.setName(giteeUser.getName());
            updateUser.setToken(giteeUser.getToken());
            updateUser.setIp(giteeUser.getIp());
            GiteeUserExample example = new GiteeUserExample();
            example.createCriteria()
                    .andIdEqualTo(dbUser.getId());
            giteeUserMapper.updateByExampleSelective(updateUser, example);
        }
    }

    public UserDto getProfile(Long userId){
        GiteeUserExample giteeUserExample = new GiteeUserExample();
        giteeUserExample.createCriteria().andIdEqualTo(userId);
        GiteeUser giteeUser = giteeUserMapper.selectByPrimaryKey(userId);
        return UserDto.getUserDtoByGiteeUser(giteeUser);
    }
}

